/*
 * @Descripttion: unTitle
 * @Author: yizheng.yuan
 * @Date: 2021-11-08 09:01:59
 * @LastEditors: yizheng.yuan
 * @LastEditTime: 2021-11-08 10:55:25
 */
// const sha1 = require('sha1')
// const axios = require('axios')

// const className = 'todo'
const TODOS = []

// const request = axios.create({
//   baseURL: 'https://d.apicloud.com/mcm/api'
// })

// const createError = (code, resp) => {
//   const err = new Error(resp.message)
//   err.code = code
//   return err
// }

// const handleRequest = ({ status, data, ...rest }) => {
//   if (status === 200) {
//     return data
//   } else {
//     throw createError(status, rest)
//   }
// }

module.exports = (appId, appKey) => {
  // const getHeaders = () => {
  //   const now = Date.now()
  //   return {
  //     'X-APICloud-AppId': appId,
  //     'X-APICloud-AppKey': `${sha1(`${appId}UZ${appKey}UZ${now}`)}.${now}`
  //   }
  // }
  return {
    async getAllTodos () {
      // return handleRequest(await request.get(`/${className}`, {
      //   headers: getHeaders()
      // }))
      return TODOS
    },
    async addTodo (todo) {
      console.log('add todo:', todo)
      todo.id = Date.now()
      TODOS.unshift(todo)
      return todo
      // return handleRequest(await request.post(
      //   `/${className}`,
      //   todo,
      //   { headers: getHeaders() }
      // ))
    },
    async updateTodo (id, todo) {
      for (let i = 0; i < TODOS.length; i++) {
        if (TODOS[i].id === id) {
          TODOS.splice(i, 1, todo)
          break
        }
      }
      return { todo }
      // return handleRequest(await request.put(
      //   `/${className}/${id}`,
      //   todo,
      //   { headers: getHeaders() }
      // ))
    },
    async deleteTodo (id) {
      for (let i = 0; i < TODOS.length; i++) {
        if (TODOS[i].id === id) {
          TODOS.splice(i, 1)
          break
        }
      }
      return { id }
      // return handleRequest(await request.delete(
      //   `/${className}/${id}`,
      //   { headers: getHeaders() }
      // ))
    },
    async deleteCompleted (ids) {
      console.log('object', ids, TODOS)
      for (let i = 0; i < ids.length; i++) {
        for (let j = TODOS.length - 1; j > -1; j--) {
          if (ids[i] === TODOS[j].id) {
            TODOS.splice(j, 1)
            break
          }
        }
      }
      return TODOS
      // const requests = ids.map(id => {
      //   return {
      //     method: 'DELETE',
      //     path: `/mcm/api/${className}/${id}`
      //   }
      // })
      // return handleRequest(await request.post(
      //   '/batch',
      //   { requests },
      //   { headers: getHeaders() }
      // ))
    }
  }
}
